package base

import (
	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
	"log"
	"time"
)

var dbConn *sqlx.DB

type DBService struct {
}

// Init 初始化数据库连接
func (this *DBService) Init() error {
	var err error
	dbConn, err = sqlx.Connect("mysql", "root:@tcp(localhost:3306)/rclx?charset=utf8mb4")

	if err != nil {
		return err
	}

	// 初始化最大连接
	dbConn.SetMaxOpenConns(20)

	// 初始化最大空闲连接
	dbConn.SetMaxIdleConns(5)

	// 初始化连接超时时间
	dbConn.SetConnMaxLifetime(time.Second * 10)

	if err = dbConn.Ping(); err != nil {
		return err
	}

	log.Println("初始化数据库连接成功")

	return nil
}

func (this *DBService) Close() error {
	if dbConn != nil {
		log.Println("数据库连接关闭中...")
		return dbConn.Close()
	}

	return nil
}

func GetDB() *sqlx.DB {
	return dbConn
}
